package com.lidroid.xutils.util;

import ohos.hiviewdfx.HiLog;
import ohos.hiviewdfx.HiLogLabel;

/**
 * LogUtils
 */
public class LogUtils {

    static final HiLogLabel hiLogLabel = new HiLogLabel(HiLog.LOG_APP, 0x00101, "MY_TAG");

    private LogUtils() {
    }

    private static String generateTag(StackTraceElement caller) {
        String tag = "%s[%s, %d]";
        String callerClazzName = caller.getClassName();
        callerClazzName = callerClazzName.substring(callerClazzName.lastIndexOf(".") + 1);
        tag = String.format(tag, callerClazzName, caller.getMethodName(), caller.getLineNumber());
        return tag;
    }

    public static void d(String content) {
        StackTraceElement caller = ReflectUtils.getCallerMethodName();
        String tag = generateTag(caller);
        HiLog.debug(hiLogLabel, tag, content);
    }

    public static void d(String content, Throwable tr) {
        StackTraceElement caller = ReflectUtils.getCallerMethodName();
        String tag = generateTag(caller);
        HiLog.debug(hiLogLabel, tag, content, tr);
    }

    public static void e(String content) {
        StackTraceElement caller = ReflectUtils.getCallerMethodName();
        String tag = generateTag(caller);
        HiLog.error(hiLogLabel, tag, content);
    }

    public static void e(String content, Throwable tr) {
        StackTraceElement caller = ReflectUtils.getCallerMethodName();
        String tag = generateTag(caller);
        HiLog.error(hiLogLabel, tag, content, tr);
    }

    public static void i(String content) {
        StackTraceElement caller = ReflectUtils.getCallerMethodName();
        String tag = generateTag(caller);
        HiLog.info(hiLogLabel, tag, content);
    }

    public static void i(String content, Throwable tr) {
        StackTraceElement caller = ReflectUtils.getCallerMethodName();
        String tag = generateTag(caller);
        HiLog.info(hiLogLabel, tag, content, tr);
    }

    public static void v(String content) {
        StackTraceElement caller = ReflectUtils.getCallerMethodName();
        String tag = generateTag(caller);
        HiLog.debug(hiLogLabel, tag, content);
    }

    public static void v(String content, Throwable tr) {
        StackTraceElement caller = ReflectUtils.getCallerMethodName();
        String tag = generateTag(caller);
        HiLog.debug(hiLogLabel, tag, content, tr);
    }

    public static void w(String content) {
        StackTraceElement caller = ReflectUtils.getCallerMethodName();
        String tag = generateTag(caller);
        HiLog.warn(hiLogLabel, tag, content);
    }

    public static void w(String content, Throwable tr) {
        StackTraceElement caller = ReflectUtils.getCallerMethodName();
        String tag = generateTag(caller);
        HiLog.warn(hiLogLabel, tag, content, tr);
    }

    public static void w(Throwable tr) {
        StackTraceElement caller = ReflectUtils.getCallerMethodName();
        String tag = generateTag(caller);
        HiLog.warn(hiLogLabel, tag, tr);
    }


    public static void wtf(String content) {
        StackTraceElement caller = ReflectUtils.getCallerMethodName();
        String tag = generateTag(caller);
        HiLog.fatal(hiLogLabel, tag, content);
    }

    public static void wtf(String content, Throwable tr) {
        StackTraceElement caller = ReflectUtils.getCallerMethodName();
        String tag = generateTag(caller);
        HiLog.fatal(hiLogLabel, tag, content, tr);
    }

    public static void wtf(Throwable tr) {
        StackTraceElement caller = ReflectUtils.getCallerMethodName();
        String tag = generateTag(caller);
        HiLog.fatal(hiLogLabel, tag, tr);
    }

}
